﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace QLBH.Base
{
    public class EmptyOrNullException:Exception
    {
        public EmptyOrNullException()
            :base()
        {

        }
        public EmptyOrNullException(String msg)
            :base(msg)
        {

        }
    }
    public class IncorectFormatException : Exception
    {
        public IncorectFormatException()
            : base()
        {

        }
        public IncorectFormatException(String msg)
            : base(msg)
        {

        }
    }
    public static class DataInputHelper
    {
        
        public static bool CheckDecimalData(String textInput, String textField)
        {
            if (!String.IsNullOrEmpty(textInput))
            {
                try
                {
                    Decimal.Parse(textInput);
                    return true;
                }
                catch (System.Exception)
                {
                    throw new Exception("Dữ liệu của " + textField + " không đúng");
                }                
            }
            else
            {
                throw new EmptyOrNullException("Bạn chưa nhập dữ liệu của " + textField);
            }
        }
        public static bool CheckTextData(String textInput,String textField,int length)
        {
            if (String.IsNullOrEmpty(textInput))
            {
                throw new EmptyOrNullException("Bạn chưa nhập dữ liệu của " + textField);               
            }
            else if (textInput.Length>length)
            {
                throw new EmptyOrNullException(textField + " không được vượt quá " + length.ToString() + " kí tự");
            }           
            return true;
        }
        public static bool CheckTextDataLength(String textInput, String textField, int length)
        {
            if (textInput.Length > length)
            {
                throw new EmptyOrNullException(textField + " không được vượt quá " + length.ToString() + " kí tự");
            }
            return true;
        }
        public static bool CheckEmailData(String emailInput)
        {
            //check only with entered value
            if (!String.IsNullOrEmpty(emailInput))
            {
                string patern = @"^[\w-]+@([\w- ]+\.)+[\w-]+$";
                Regex reg = new Regex(patern);
                if (reg.IsMatch(emailInput))
                {
                    return true;
                }
                else
                {
                    throw new IncorectFormatException("Điện chỉ email không đúng");
                }
            }
            return true;
        }
        public static bool CheckFaxNumber(String phoneNumber)
        {
            //check only with entered value
            if (!String.IsNullOrEmpty(phoneNumber))
            {
                string patern1 = @"^\d{10,11}$";


                Regex reg1 = new Regex(patern1);


                if (reg1.IsMatch(phoneNumber))
                {
                    return true;
                }
                else
                {
                    throw new IncorectFormatException("Số fax chưa đúng, số fax phải gồm 10 hoặc 11 chữ số!");
                }
            }
            return true;
        }
        public static bool CheckPhoneNumber(String phoneNumber)
        {
            //check only with entered value
            if (!String.IsNullOrEmpty(phoneNumber))
            {
                string patern1 = @"^\d{10,11}$";


                Regex reg1 = new Regex(patern1);


                if (reg1.IsMatch(phoneNumber))
                {
                    return true;
                }
                else
                {
                    throw new IncorectFormatException("Số điện thoại chưa đúng, số điện thoại phải gồm 10 hoặc 11 chữ số!");
                }
            }
            return true;
        }
        public static bool CheckDateTime(DateTime valueInput,String fieldName)
        {
            if (valueInput==null)
            {
                throw new EmptyOrNullException("Bạn chưa nhập " + fieldName);
            }
            return true;
        }
        /// <summary>
        /// Check Integer input
        /// </summary>
        /// <param name="strInput"> String input value</param>
        /// <param name="fieldName">The field name target</param>
        /// <returns>return True when input is correct, False when input is incorrect</returns>
        public static bool CheckIntValue(String strInput, String fieldName)
        {
            if (String.IsNullOrEmpty(strInput))
            {
                throw new EmptyOrNullException("Bạn chưa nhập " + fieldName);
            }
            else
            {
                try
                {
                    int value = int.Parse(strInput);
                    if (value < 0)
                    {
                        throw new IncorectFormatException(fieldName + " phải là số dương");
                    }
                    return true;
                }
                catch (IncorectFormatException ex)
                {
                    throw ex;
                }
                catch (System.Exception)
                {
                    throw new IncorectFormatException(fieldName + " phải là số nguyên");
                }
            }
        }


    }
}
